package com.ny.mapper;

import java.util.List;
import com.ny.domain.ProductPurchaseDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;

/**
 * ProductPurchaseMapper
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
@Mapper
public interface ProductPurchaseMapper {

    /**
     * 根据会员ID查询所有购买记录
     *
     * @Param memberId 会员ID
     * @Return List<ProductPurchaseDO>
     */
    List<ProductPurchaseDO> selectAllByMemberId(Integer memberId);

    /**
     * 根据购买记录ID查询购买记录信息
     *
     * @Param purchaseId 购买记录ID
     * @Return ProductPurchaseDO
     */
    ProductPurchaseDO selectById(Integer purchaseId);

    /**
     * 新增购买记录信息
     *
     * @Param productPurchaseDO 购买记录实体类
     * @Return int
     */
    int insert(ProductPurchaseDO productPurchaseDO);

    /**
     * 更新指定ID的购买记录信息
     *
     * @Param productPurchaseDO 购买记录实体类
     * @Return int
     */
    int updateById(ProductPurchaseDO productPurchaseDO);

    /**
     * 删除指定ID的购买记录信息
     *
     * @Param purchaseId 购买记录ID
     * @Return int
     */
    int deleteById(Integer purchaseId);

    /**
     * 查询所有商品销售记录
     * @Return List<ProductPurchaseDO>
     */
    List<ProductPurchaseDO> selectAll();

    /**
     * 通过会员ID查询商品购买记录
     * @Param memberId
     * @Return List<ProductPurchaseDO>
     */
    List<ProductPurchaseDO> selectByMemberId(@Param("memberId") Integer memberId);

    /**
     * 根据会员ID和日期查询购买记录
     *
     * @param memberId 会员ID
     * @param analysisDate 分析日期
     * @return ProductPurchaseDO
     */
    ProductPurchaseDO selectByMemberIdAndDate(@Param("memberId") Integer memberId, @Param("analysisDate") Date analysisDate);

    /**
     * 根据日期查询所有会员的购买记录
     *
     * @param analysisDate 分析日期
     * @return List<ProductPurchaseDO>
     */
    List<ProductPurchaseDO> selectAllByDate(@Param("analysisDate") Date analysisDate);
}
